package com.lukasz;

class ProducentKonsument{
	int wartosc = 0;
	boolean valueSet = false;
	
	synchronized int get(){
		if(!valueSet)
			try{
				wait();
			}catch(InterruptedException e){
				System.out.println("Zlapano wyjatek "+ e);
			}
			System.out.println("Pobrano "+ wartosc);
			valueSet = false;
			notify();
			return wartosc;
	}
	synchronized void put(int wartosc){
		if(valueSet)
			try{
				wait();
			}catch(InterruptedException e){
				System.out.println("Zlapano wyjatek "+ e);
			}
			this.wartosc = wartosc;
			System.out.println("Wstawiono "+wartosc);
			valueSet = true;
			notify();
	}
	
}

class Producent implements Runnable{
	ProducentKonsument pk;
	
	Producent(ProducentKonsument pk){
		this.pk = pk;
		new Thread(this,"Producent").start();
	}
	
	public void run(){
		int i = 0;
		while(true)
			pk.put(i++);
	}
}
class Konsument implements Runnable{
	ProducentKonsument pk;
	Konsument(ProducentKonsument pk){
		this.pk = pk;
		new Thread(this,"Producent").start();
	}
	public void run(){
		while(true)
			pk.get();
	}
}
public class KomunikacjaWatki {

	public static void main(String[] args) {
		ProducentKonsument pk = new ProducentKonsument();
		Producent p = new Producent(pk);
		Konsument k = new Konsument(pk);
		

	}

}
